#include <stdio.h>
#include <stdlib.h>
#include "xml.h"
#include "structs.h"

extern struct ExternalDeclarationList *root;

int tree_print();

void expression_print(struct Expression * expr);
void expressionlist_print(struct ExpressionList * list);

void statement_print(struct Statement *stmt);
void statementlist_print(struct StatementList* stmts);

void externaldeclaration_print(struct ExternalDeclaration * extdecl);
void externaldeclarationlist_print(struct ExternalDeclarationList * list);

void enumdeclaration_print(struct EnumDeclaration * enumdecl);
void enumeratorlist_print(struct EnumeratorList * list);

void variabledeclaration_print(struct VariableDeclaration * vardecl);
void variabledeclarationlist_print(struct VariableDeclarationList * list);

void type_print(struct Type * type);

void functiondefinition_print(struct FunctionDefinition * func);

void classinfo_print(struct ClassInfo * classinfo);

void declarationdefinition_print(struct DeclarationDefinition * decldef);
void declarationdefinitionlist_print(struct DeclarationDefinitionList * list);

void declarator_print(struct Declarator * decl);

void labeledstatement_print(struct LabeledStatement * statement);
void labeledstatementlist_print(struct LabeledStatementList * list);